| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=float), | public | :: | Pout_off | ||||
| real(kind=float), | public | :: | Qout | ||||
| real(kind=float), | public | :: | Qout_off | ||||
| type(Diversion), | public | :: | bypass | 
                 diversion channel  | 
        |||
| logical, | public | :: | bypassIsPresent | ||||
| integer(kind=short), | public | :: | c | 
                 cell column j  | 
        |||
| integer(kind=short), | public | :: | cout | 
                 cell column where off-stream pool outflow is discharged  | 
        |||
| logical, | public | :: | dischargeDiverted | 
                 read observed diverted discharge when true  | 
        |||
| logical, | public | :: | dischargeDownstream | 
                 read observed downstream discharge when true  | 
        |||
| real(kind=float), | public | :: | eFlow(365) | ||||
| integer(kind=short), | public | :: | fileunit_out | 
                 file unit for writing results  | 
        |||
| real(kind=float), | public | :: | freeFlow | ||||
| real(kind=float), | public | :: | freeFlowElevation | ||||
| real(kind=float), | public | :: | fullReservoirLevel | 
                 full reservoir level (m)  | 
        |||
| type(Table), | public | :: | geometry | ||||
| integer(kind=short), | public | :: | geometryDOY(365) | ||||
| logical, | public | :: | highLevel | 
                 true when reservoir is managed for high level  | 
        |||
| integer(kind=short), | public | :: | id | ||||
| character(len=100), | public | :: | name | ||||
| type(ObservationalNetwork), | public | :: | network | ||||
| type(ObservationalNetwork), | public | :: | networkDischargeDiverted | ||||
| type(ObservationalNetwork), | public | :: | networkDischargeDownstream | ||||
| type(Reservoir), | public, | POINTER | :: | next | |||
| integer, | public | :: | qoutRule | 
                 determines how to compute Qout  | 
        |||
| integer(kind=short), | public | :: | r | 
                 cell row i  | 
        |||
| logical, | public | :: | rising | 
                 override Qout calculation only when Qin discharge is rising  | 
        |||
| integer(kind=short), | public | :: | rk | 
                 runge-kutta order  | 
        |||
| integer(kind=short), | public | :: | rout | 
                 cell row where off-stream pool outflow is discharged  | 
        |||
| real(kind=float), | public | :: | stage | 
                 current stage [m]  | 
        |||
| real(kind=float), | public | :: | stageMax | 
                 maximum stage [m]  | 
        |||
| real(kind=float), | public | :: | stageTarget | 
                 follow a target (observed) stage [m]  | 
        |||
| type(DateTime), | public | :: | tReadNewDischargeDiverted | ||||
| type(DateTime), | public | :: | tReadNewDischargeDownstream | ||||
| type(DateTime), | public | :: | tReadNewStage | ||||
| character(len=10), | public | :: | typ | 
                 on-stream off-stream by-pass  | 
        |||
| integer(kind=short), | public | :: | typOut | 
                 type ofoutflow: 1=free flow 2=target level  | 
        |||
| integer(kind=short), | public | :: | unit | 
                 file unit target stage  | 
        |||
| integer(kind=short), | public | :: | unitDischargeDiverted | 
                 file unit of observed diverted discharge  | 
        |||
| integer(kind=short), | public | :: | unitDischargeDownstream | 
                 file unit of observed downstream discharge  | 
        |||
| type(Table), | public | :: | weir | ||||
| integer(kind=short), | public | :: | weirDOY(365) | ||||
| real(kind=float), | public | :: | xout | 
                 x coordinate where outflow from reservoir is discharged  | 
        |||
| type(Coordinate), | public | :: | xyz | 
                 easting, northing and elevation in real world  | 
        |||
| real(kind=float), | public | :: | yout | 
                 y coordinate where outflow from reservoir is discharged  | 
        
TYPE Reservoir INTEGER(KIND = short) :: id INTEGER(KIND = short) :: rk !!runge-kutta order CHARACTER(LEN=100) :: name CHARACTER(len=10) :: typ !! on-stream off-stream by-pass TYPE (Coordinate) :: xyz !!easting, northing and elevation in real world INTEGER(KIND = short) :: r !!cell row i INTEGER(KIND = short) :: c !!cell column j INTEGER(KIND = short) :: rout !!cell row where off-stream pool outflow is discharged INTEGER(KIND = short) :: cout !!cell column where off-stream pool outflow is discharged REAL(KIND = float) :: stage !!current stage [m] REAL(KIND = float) :: stageMax !!maximum stage [m] REAL(KIND = float) :: stageTarget !!follow a target (observed) stage [m] INTEGER(KIND = short) :: typOut !!type ofoutflow: 1=free flow 2=target level INTEGER(KIND = short) :: unit !!file unit target stage INTEGER(KIND = short) :: unitDischargeDownstream !!file unit of observed downstream discharge INTEGER(KIND = short) :: unitDischargeDiverted !!file unit of observed diverted discharge LOGICAL :: dischargeDownstream !!read observed downstream discharge when true LOGICAL :: dischargeDiverted !!read observed diverted discharge when true INTEGER(KIND = short) :: fileunit_out !!file unit for writing results TYPE(ObservationalNetwork) :: network ! pseudo station network of target file TYPE(ObservationalNetwork) :: networkDischargeDownstream ! pseudo station network of downstream discharge TYPE(ObservationalNetwork) :: networkDischargeDiverted ! pseudo station network of diverted discharge TYPE(DateTime) :: tReadNewStage TYPE(DateTime) :: tReadNewDischargeDownstream TYPE(DateTime) :: tReadNewDischargeDiverted REAL(KIND = float) :: Qout ! [m3/s] REAL(KIND = float) :: Qout_off ! off-stream pool outflow [m3/s] REAL(KIND = float) :: Pout_off ! off-stream pool outflow of previous time step [m3/s] REAL(KIND = float) :: eFlow (365) !daily environmental flow [m3/s] REAL(KIND = float) :: freeFlow ![m3/s] when Qin < freeFlow and stage <= freeFlowElevation Qout = Qin REAL(KIND = float) :: freeFlowElevation !free flow elevation [m] TYPE(Table) :: geometry !reservoir geometry and stage-discharge relationship TYPE(Table) :: weir !used by off-stream reservoirs and bypass channels INTEGER(KIND = short) :: weirDOY (365) !weir function used for a given doy INTEGER(KIND = short) :: geometryDOY (365) !geometry function used for a given doy REAL(KIND = float) :: xout !! x coordinate where outflow from reservoir is discharged REAL(KIND = float) :: yout !! y coordinate where outflow from reservoir is discharged LOGICAL :: highLevel !! true when reservoir is managed for high level REAL(KIND = float) :: fullReservoirLevel !! full reservoir level (m) INTEGER :: qoutRule !!determines how to compute Qout LOGICAL :: rising !!override Qout calculation only when Qin discharge is rising TYPE (Diversion) :: bypass !!diversion channel LOGICAL :: bypassIsPresent TYPE (Reservoir), POINTER :: next !dynamic list END TYPE Reservoir